*******************************
*     H MOVER                 *
*******************************
AHI EQU $800  
ALO EQU AHI+$100 
COUNT EQU $ED
DOOR EQU $EC ;SAME AS WIDTH IN BLOCK.PLOT
CHNUM EQU $FD
ADDR EQU ALO+$131 ;MOD.   PRINT BLOCK
XTEMP EQU AHI+$C3
YTEMP EQU XTEMP+1
COUNTER EQU YTEMP+1
TREADNUM EQU COUNTER+1
PRINT EQU AHI+$295 
MASK1 EQU AHI+$C7
FLAG EQU MASK1+1
RNUM EQU FLAG+1
LEV EQU RNUM+1
TEST EQU LEV+1
ROW EQU TEST+1
COL EQU ROW+1
TEMP EQU COL+1
TEMP2 EQU TEMP+1
WIDTH EQU $EC
YBOT EQU $FC
KBD EQU $C000
STRB EQU $C010
OLDKEY EQU ALO+$C0
NEWKEY EQU ALO+$C1
ACT1 EQU ALO+$C2
SEQTAB EQU $1F00 ;MAYBE CHANGE LATER
CRAWSEQ EQU $1F08
CRAWLEV EQU $1F18
XH EQU ALO+$C3
YH EQU ALO+$C4
FRAM EQU ALO+$C5
POSE EQU ALO+$C6
DEL EQU ALO+$C7
TEMPOSE EQU ALO+$C8
MODE EQU ALO+$C9
WFLAG EQU ALO+$CA
RFLAG EQU ALO+$CB
CYCLE EQU ALO+$CC
TEMYH EQU ALO+$CD
RCOUNT EQU ALO+$CE
DOWNCOUNT EQU ALO+$CF
TEMCOUNT EQU ALO+$FF
KEYTEM EQU ALO+$D0
UPDOWN EQU ALO+$D1
STARX EQU ALO+$D2  
STARY EQU ALO+$D3
WAIT EQU $FCA8
RNDL EQU $4E
RNDH EQU $4F
ERASEOLD EQU $A3E 
PRINTNEW EQU $A48 
COLFLG EQU $E3
BELL EQU $FF3A
CLLOW EQU $9DA
CLMID EQU $9DB
CLHI EQU $9DC
REGSET EQU $5209
BULLETCOUNT EQU $8D5
STICKCOUNT EQU $8E5
STAT1 EQU $8D0
STAT2 EQU $8D1
GUNPOS EQU $8D6
XMID EQU $8FA
YLOW EQU $8FB
FFLG EQU $9F0
MFFLG EQU $9F1
CHN1 EQU $9F2
CHN2 EQU $9F3
XNEW EQU $EF0 
XOLD EQU $EE0 
OPMODE0 EQU $E90  
OPMODE1 EQU $E91
OPFLG0 EQU $E80
MNSTLOAD EQU $6900 
MNSTSET EQU $5FC0
ADJX EQU $8FD
DELTA EQU $93E0
LEVSETTER EQU $520C
ACTF EQU $8F7
XPOS EQU $FA
CHRTLUN EQU $C47
CHRTJAB EQU $C4A
CHRTLOW EQU $C4D
CHLFLUN EQU $C50
CHLFJAB EQU $C53
CHLFLOW EQU $C56
TIM1 EQU $9EA
TIM2 EQU $9EB
TIM3 EQU $9EC ;G.P. TIMERS
DELFIX EQU $FC9 
CAPTUREFLG EQU $FC7 
LEVOP EQU $E30
PARAMSAVE EQU $6918
OUTGO EQU $691B
HELPER EQU $5600 
MNSTREINF EQU $E60
WATEROOM EQU $9F6
WATLEV EQU $8DB
SHRINKROOMA EQU $9F7
SHRINKROOMB EQU $9F8
GPFLG EQU $9EB
CEIL EQU $8EF
PERLEV EQU $9FD
XLF EQU $9FB
XRT EQU $9FC
CLHIHI EQU $9DE
BLUB EQU $5000
SHRINKA EQU $5003
SHRINKB EQU $5006
PRINSTR EQU $5F40
XTAB EQU $8E7
YTAB EQU $8E8
STRNUM EQU $8EA
NOISEFLG EQU $8DA
FINISHED EQU $6506
SAFETY EQU $9EF
*
 ORG $1000     
*******************************
*
*  
*
*
ALLOUT JMP ALLOUT1
ERASEH JMP ERASEH1
REALLYFALL JMP REALLYFALL1
COLLIDE JMP COLLIDE1
SETWALK JMP SETWALK1
SETRIGHT JMP SETRIGHT1
SETLEFT JMP SETLEFT1
WARMSTART JMP WARMSTART1
REPLAY JMP REPLAY1
START JMP START1
SCLR1 JMP SCLR
*
START1 LDA #0
 STA ROW 
 LDA #3
 STA COL 
 JSR SETRNUM 
 JSR SCLR  
 LDA $C052
 JSR $5700 ;ROOM DRAW
 JMP INIT
*
*
*******************************
*
*   KEYBOARD CHECK            *
*  
*
*******************************
*
*
GETKEY BIT ROW
 BMI PASS
 LDA CYCLE
 BNE PASS
 BIT CAPTUREFLG
 BMI PASS
 BIT UPDOWN 
 BVS PASS
 INC RNDL       
 BNE BITK
 INC RNDH
BITK BIT KBD
 BPL PASS
GOTKEY LDA KBD
 STA NEWKEY
 LDA #0
 STA STRB
 LDA NEWKEY
 CMP OLDKEY
 BEQ PASS
 STA OLDKEY
PASS RTS
*****************************
UPDATE LDX FRAM
 LDA SEQTAB,X
 STA TEMPOSE
 BNE DIR
 LDA MODE
 AND #04
 BEQ CHNGX
 LDA YH
 SEC
 SBC #8
 STA YH
CHNGX BIT ACT1
 BMI LEFT
RIGHT INC XH
 JMP DIR
LEFT DEC XH
DIR JSR FIXPOSE 
 RTS
**************************
******************************
* THIS IS TEMP. ACTION MONITOR*
******************************* 
*
ACTION BIT UPDOWN
 BMI DOWNINT
 BIT CAPTUREFLG
 BMI NC
 BIT COLFLG
 BPL NC
 BVC NC
 JMP COLLIDE1
NC BIT MODE     
 BVS FIGHTINT           
 BPL OUTACTINT ;STOPPED 
 LDA MODE
 LSR A
 BCS JUMPINT
 LSR A
 BCS FALLINT  
 LSR A ;CAN USE THIS FOR SOMETHING LATER 
 LSR A
 BCS CRAWLINT
 LSR A
 LSR A
 BCC WALKINT
RUNUNT JMP RUN       
DOWNINT JMP DOWNTEMP     
OUTACTINT RTS 
FIGHTINT JMP FIGHT  
JUMPINT JMP JUMP
FALLINT JMP FIRSTFALL 
CRAWLINT JMP CRAWL  
WALKINT JMP WALK
INTERMED RTS
WALK CLC
 BIT WFLAG     
 BPL NOBITW
 SEC
NOBITW ROL WFLAG
 BCC WALKOUT 
 JSR ERASEH1   
 JSR UPDATE
 JSR PRINTH 
 INC RCOUNT
 BNE CLICK
 DEC RCOUNT
CLICK BIT NOISEFLG
 BMI DECFRAM
 BIT $C030
DECFRAM DEC FRAM
 BPL WALKOUT
 LDA #3
 STA FRAM
 LDA YH
 STA TEMYH
WALKOUT RTS
RUN CLC
 BIT RFLAG        
 BPL NOBITR 
 SEC
NOBITR ROL RFLAG 
 BCC RUNOUT 
 JSR ERASEH1 
 JSR UPDATE
 JSR PRINTH
 DEC RCOUNT
 BNE CLICK2 
 LDA #'W'
 STA OLDKEY
CLICK2 LDA $C030 
 DEC FRAM
 BPL RUNOUT
 LDA #3
 STA FRAM
 LDA YH
 STA TEMYH
RUNOUT RTS
******************************* 
JUMP LDA CYCLE    
 BNE LOADED
 LDA #11 
 STA CYCLE
 LDA YH
 STA TEMYH
LOADED LDA CYCLE
 BEQ JA
 CMP #11
 BEQ JM1
 CMP #10
 BEQ JM3
 CMP #1
 BEQ JM1
 JMP JM2
JA JMP FINJUMP 
JM3 DEC CYCLE
 JMP FINJUMP    
JM1 JSR PRINTH 
 LDA TEMYH
 CLC
 ADC #8 
 STA YH
 LDA #3
 STA TEMPOSE
 JSR FIXPOSE
 JSR PRINTH
 DEC CYCLE
 JMP FINJUMP
JM2 JSR PRINTH 
 LDA #4
 STA TEMPOSE
 LDA TEMYH
 STA YH
 BIT ACT1
 BPL JR
 DEC XH
 JMP DC
JR INC XH
DC JSR FIXPOSE 
 JSR PRINTH
 DEC CYCLE
FINJUMP LDA CYCLE
 BNE STILJMP
 LDA #$FE
 AND MODE
 STA MODE ;CLEAR JUMP MODE
STILJMP LDA MODE
 LSR A
 BCS OUTJMP
 LDA MODE
 AND #$20
 BEQ KEEPWALKING
 LDA #'R'
 JMP PUTAWAY
KEEPWALKING LDA #'W'
PUTAWAY STA OLDKEY
 JSR ERASEH1 
 LDA TEMYH
 STA YH
 LDA #0
 STA TEMPOSE
 JSR FIXPOSE
 JSR PRINTH
OUTJMP RTS
*
SETFIGHT LDA MODE
 AND #$F9 
 STA MODE ;CLEAR CLIMB
 LDA ACT1
 STA ACTF
 BIT STAT2
 BVS GOTKNIFE
 BPL NOWEAP
 LDA #$4A
 STA DRAWN+1
 LDA #$80
 STA GUNPOS
 JMP SETUPFGT
GOTKNIFE LDA #$45
 STA DRAWN+1
 LDA #0
 STA GUNPOS
SETUPFGT JSR CHKCRA
 ORA #$40
 STA MODE
 JSR ERASEH1 
DRAWN LDA #$45 
 STA TEMPOSE
 JSR FIXPOSEF  
 JSR PRINTH
OUTACT RTS
*
NOWEAP LDA #'%'
 STA OLDKEY
 JSR BELL        
 RTS
*
*********************************
*
FIGHT LDA OLDKEY
 CMP #'%'
 BNE NF1
 JMP CHF      
NF1 CMP #'D'
 BEQ RMINT
 CMP #'A'
 BEQ LMINT
 CMP #'S'
 BEQ SPININT
 CMP #'L'
 BEQ LUNGEINT
 CMP #'M'
 BEQ LOWBLOWINT
 CMP #'G'
 BEQ GUNINT
 CMP #'W'
 BEQ JCM
 CMP #'R'
 BEQ JCM
 CMP #'J'
 BEQ JCMP 
 CMP#' '
 BEQ SHOOTINT
 CMP #'Z'
 BNE FIGHTOUT 
 JMP SETINVENTORY 
FIGHTOUT RTS  
RMINT JMP RM
LMINT JMP LM
SPININT JMP SPIN
LUNGEINT JMP LUNGE
LOWBLOWINT JMP LOWBLOW
GUNINT JMP GUN
SHOOTINT JMP SHOOT
JCMP LDA #'W'
 STA OLDKEY
JCM LDA ACTF
 STA ACT1
 LDA OLDKEY
 JMP FFF
*
CHF LDA MODE
 LSR A
 LSR A
 BCS JJ
 RTS
JJ JMP FIRSTFALL
*
*
RM JSR SETRIGHT1 
 BIT GUNPOS   
 BPL RMM
RMG LDA #$49 
 STA CHN1
 LDA #$4A
 STA CHN2
 JMP INCXH
*
RMM LDA #$46 
 STA CHN1
 LDA #$45 
 STA CHN2
INCXH LDA #$EE 
 STA PR2
 JSR GEN 
 JSR CHRTJAB
 RTS
*
*
LM JSR SETLEFT1
 BIT GUNPOS
 BPL LMM
LMG LDA #$49
 STA CHN1
 LDA #$4A
 STA CHN2
 JMP DECXH
*
LMM LDA #$46 
 STA CHN1
 LDA #$45 
 STA CHN2
DECXH LDA #$CE 
 STA PR2
 JSR GEN
 JSR CHLFJAB  
 RTS
*
*
LUNGE BIT STAT2
 BVS LUN
 RTS ;NO MACH
LUN BIT GUNPOS
 BPL LUN2
 JMP SHOOT
LUN2 LDA #$46  
 STA CHN1
 LDA #$48
 STA CHN2
 BIT ACTF
 BPL LNRT
 LDA #$CE
 STA PR2
 JSR GEN 
 JSR CHLFLUN 
 RTS
*
LNRT LDA #$EE
 STA PR2
 JSR GEN 
 JSR CHRTLUN  
 RTS
*
*
LOWBLOW BIT STAT2
 BVS LOWB
 RTS
LOWB JSR ERASEH1    
 LDA #$47
 STA TEMPOSE
 JSR FIXPOSEF
 JSR PRINTH
 LDA #'%'
 STA OLDKEY
 JSR CHLOWFAC
 RTS
*
*
CHLOWFAC BIT ACTF
 BMI LEFTLOW
 JSR CHRTLOW
 RTS
LEFTLOW JSR CHLFLOW
 RTS
*
*
GEN JSR ROLFFLG 
 BCC MGOUT 
 JSR ERASEH1  
 BIT MFFLG 
 BMI PR2  
PR1 LDA CHN1  
 STA TEMPOSE
 JSR FIXPOSEF
 JSR PRINTH
 LDA #$80
 STA MFFLG
 RTS
PR2 INC XH  ;CHANGEABLE 
 LDA CHN2    
 STA TEMPOSE
 JSR FIXPOSEF
 JSR PRINTH
 LDA #'%'
 STA OLDKEY
 LDA #0
 STA MFFLG
MGOUT RTS 
*
ROLFFLG CLC
 BIT FFLG
 BPL FFL1
 SEC
FFL1 ROL FFLG
 RTS
*
*
*
*
SPIN BIT GUNPOS
 BPL MACHE
GU LDA #$4A
 STA PRNF+1
 JMP SPIN1
MACHE LDA #$45
 STA PRNF+1
SPIN1 JSR ERASEH1 
 BIT ACTF
 BPL TNL 
 LDA ACTF
 AND #$7F
 STA ACTF
 JMP PRNF
TNL LDA ACTF
 ORA #$80
 STA ACTF
PRNF LDA #$45 ;CHANGEABLE 
 STA TEMPOSE
 JSR FIXPOSEF
 JSR PRINTH
 LDA #'%'
 STA OLDKEY
 RTS
*
*
*
FIXPOSEF BIT ACTF   
 JMP FXE
*
**********************
*
GUN BIT STAT2
 BMI GUN1
 RTS
GUN1 JSR ERASEH1 
 LDA #$4A
 STA TEMPOSE
 JSR FIXPOSEF
 JSR PRINTH
 LDA #'%' 
 STA OLDKEY
 LDA #$80
 STA GUNPOS
 RTS
*
*
SHOOT BIT GUNPOS
 BMI SHOOT1
 RTS
SHOOT1 LDA BULLETCOUNT
 BNE SHOOT2
 RTS
SHOOT2 LDA XH  
 STA XTEMP 
 BIT ACTF
 BPL SHRT
SHLF LDA #$3E
 STA TEMPOSE
 DEC XTEMP
 JMP POW
SHRT LDA #$3F
 STA TEMPOSE
 INC XTEMP 
 INC XTEMP 
POW LDX XTEMP 
 LDY YH
 LDA TEMPOSE
 JSR ERASEOLD    
 JSR $520F ;PISTOL SHOT 
 LDX XTEMP
 LDY YH
 LDA TEMPOSE
 JSR ERASEOLD
 DEC BULLETCOUNT
 JSR $6000 ;CHECK SHOT EFFECT 
 LDA #'%'
 STA OLDKEY
 RTS
*
*
*
*
*
*
*
 RTS
NOISETOG LDA $8DA ;NOISEFLG
 EOR #$80
 STA $8DA
 LDA #'S' 
 STA OLDKEY
 RTS
*
*******************************
SETMODE BIT ACT1 
 BVC SETONE   
 LDA MODE
 ORA #2 ;SETS FALL MODE 
 STA MODE
 JMP ALLOUT1
SETONE LDA OLDKEY  
F BIT MODE 
 BVC FF 
 RTS ;NO CHANGE FROM FIGHT MODE
FF CMP #'F' 
 BNE FFF 
 JMP SETFIGHT
FFF CMP #'W' 
 BEQ SETWALK1
 CMP #$93
 BEQ NOISETOG
 CMP #'R'
 BEQ SETRUN
 CMP #'S'
 BEQ SETMID
 CMP #'D'
 BEQ SETRIGHT1INT 
 CMP #'A'
 BEQ SETLEFT1INT 
 CMP #'J'
 BEQ SETJUMPINT 
 CMP #'C'
 BEQ SETCLIMBINT 
 CMP #'G'
 BEQ SETCRAWLINT 
 CMP #'L' ;LOOK 
 BEQ SETLOOKINBOX 
 CMP #'O'
 BEQ SETOPENBOX
 CMP #'T'
 BEQ SETTAKECONTENTS
 CMP #'Q'
 CMP #'P'
 BEQ SETPLACEINT
CMZ CMP #'Z' 
 BEQ SETINVENTORY
 BIT ACT1 
 BVC CONTINUE
 LDA MODE
 ORA #2
 STA MODE
CONTINUE JMP ALLOUT1 ;MORE LATER  
SETRIGHT1INT JMP SETRIGHT1
SETLEFT1INT JMP SETLEFT1
SETJUMPINT JMP SETJUMP
SETCLIMBINT JMP SETCLIMB
SETCRAWLINT JSR FALLCLR
 JMP SETCRAWL
SETPLACEINT JSR FALLCLR
 JMP $5200
SETLOOKINBOX JSR FALLCLR
 JMP $5706
SETOPENBOX JSR FALLCLR
 JMP $5709
SETTAKECONTENTS JSR FALLCLR
 JMP $570C
SETINVENTORY JSR FALLCLR
 JMP $570F
SETWALK1 JSR CHKCRA  
 AND #$80 
 ORA #$80
 JMP MODEOUT
SETRUN JSR CHKCRA  
 AND #$A0 
 ORA #$A0 
 JMP MODEOUT
SETMID LDA TEMPOSE
 CMP #3
 BEQ MIDOUT
 BIT MODE
 BPL MIDOUT
 JSR CHKCRA
 LDA MODE
 AND #$7D 
 STA MODE
 JSR ERASEH1 
 LDA #0
 STA TEMPOSE
 STA CYCLE ;RESET JUMP CYCLE
 JSR FIXPOSE
 JSR PRINTH
MIDOUT JMP ALLOUT1 
SETRIGHT1 LDA ACT1
 AND #$7F
 STA ACT1
 JMP FALLCLR 
SETLEFT1 LDA ACT1 
 ORA #$80
 STA ACT1
FALLCLR LDA MODE 
 AND #$FC ;CLR JUMP 
 STA MODE 
 LDA #0      
 STA CYCLE
 RTS         
SETJUMP LDA YH
 CMP #$89
 BCC GOAHEAD
 RTS ;TOO LOW TO JUMP
GOAHEAD JSR CHKCRA
 ORA #1
 JMP MODEOUT 
SETCLIMB LDA MODE
 ORA #4
 JMP MODEOUT
SETCRAWL LDA MODE
 AND #8
 BNE ALLOUT1 ;ALLREADY SET
 JSR FALLCLR
 JSR ERASEH1            
CRAW2 LDA MODE 
 ORA #$88 
 STA MODE
 LDA YH
 STA TEMYH
 CLC 
 ADC #$F  
 STA YH
 LDA #$23
 STA POSE
 JSR PRINTH ;PRINT KNEEL
 LDA #'!'
 STA OLDKEY
 JMP ALLOUT1
*
MODEOUT STA MODE
ALLOUT1 RTS
*******************************
*
PRINTH LDA POSE
 LDX XH
 LDY YH   
 JSR PRINTNEW 
 STY YLOW
 JSR CHECKXPOS
 CPY #$91
 BEQ MS
 CPY #$F1
 BEQ MS
 JSR CHECKYPOS 
MS JSR FLOORCHECK 
PROUT RTS 
***************************
FIXPOSE BIT ACT1 
FXE BPL ADDZERO 
 LDA #$10
 JMP ADDIT
ADDZERO LDA #0
ADDIT CLC
 ADC TEMPOSE
 STA POSE
 RTS
*****************************
SETRNUM EQU $C00    
*
ROOMCHANGE JSR SCLR   
 JSR SETRNUM 
 LDX RNUM ;JUST TO USE 3 BYTES 
 JSR $5700  
 JSR ROOMCLUE
 LDA #0    
 STA XLF                
 LDA #40
 STA XRT
 JSR PRINTH 
 RTS
*****************************
CHECKXPOS LDA #254 
 CMP XH
 BCC ENTRIGHT 
 LDA #38 
 CMP XH 
 BCC ENTLEFT  
NOCH RTS           
ENTLEFT INC COL 
 LDA #$7 ;ALLOW 8 COL. MAX 
 AND COL
 STA COL
 LDA #0
 STA XH
 JMP RC1
ENTRIGHT DEC COL  
 LDA #$7 ;8 COL. MAX 
 AND COL
 STA COL
 LDA #38
 STA XH
RC1 JSR ROOMCHANGE 
CXOUT RTS
***************************
*******************************
*
*
********************************
*
FLOORCHECK LDA WIDTH 
 LSR A
 CLC
 ADC XH
 CMP #39
 BCS YESFL
 STA XMID
 TAX
 LDY YBOT
 INY
 LDA AHI,Y  
 STA FLC+2
 LDA ALO,Y
 STA FLC+1
FLC LDA $2000,X 
 BNE YESFL
NOFL LDA #$40 
 ORA ACT1 ;USE BIT 6 AS FLOOR FLAG
 JMP OUTFLCHK
YESFL LDA #0
 LDA #$BF
 AND ACT1
OUTFLCHK STA ACT1
 RTS
****************************** 
FIRSTFALL JSR ERASEH1 
 LDA #0
 STA DOWNCOUNT
 LDA OLDKEY
 STA KEYTEM
 CLC
 LDA YH
 ADC #8
 STA YH
 JSR PRINTH
 LDA MODE
 AND #8
 BNE REALLYFALL1
 BIT ACT1
 BVC JUSTASTAIR 
REALLYFALL1 BIT CAPTUREFLG
 BPL LOADDB
 LDA #0
 STA CAPTUREFLG                
 LDA OPMODE0
 ORA #$10
 STA OPMODE0
 LDA OPMODE1
 ORA #$10
 STA OPMODE1 ;RESTORES BGS
LOADDB LDA #$DB           
 STA OLDKEY
 LDA ACT1
 AND #$7F
 STA ACT1 ;MEANS STOPPED FOR ACTION ROUT.
 JMP FLUP
JUSTASTAIR LDA KEYTEM
 STA OLDKEY
 LDA MODE
 AND #$FD
 STA MODE
 RTS
FLUP JSR ERASEH1 
 INC YH 
 INC DOWNCOUNT
 JSR PRINTH
 BIT ACT1
 BVS FLUP ;HIT NOTHING YEYT
 LDA YBOT
 CMP #48
 BEQ HITTOP
 CMP #104
 BEQ HITMID
 CMP #160
 BEQ HITBOT
 JMP FLUP
HITTOP JSR ERASEH1 
 LDA #$9  
 STA TEMYH
 LDA #$28 
 JMP OUTFLP
HITMID JSR ERASEH1 
 LDA #$41 
 STA TEMYH
 LDA #$60 
 JMP OUTFLP
HITBOT JSR ERASEH1 
 LDA #$79 
 STA TEMYH
 LDA #$98  
OUTFLP STA YH
 LDA #$20 
 STA POSE ;CHANGE TO DOWN FIG.
 LDA MODE
 AND #$FD
 STA MODE
 JSR ERASEH1 
 LDA ACT1
 ORA #$40 ;LOCK OUT KBD 
 STA ACT1
 LDA #$80
 ORA UPDOWN
 STA UPDOWN
 RTS
*****************************
*****************************
DOWNTEMP DEC DOWNCOUNT
 BNE OUTDOWN
 JSR ERASEH1 ;ERASEFLAT FIG.
 LDA #0
 STA CYCLE
 LDA TEMYH
 STA YH
 LDA MODE
 AND #$30 
 STA MODE
 JSR CRAW2   
 LDA ACT1         
 AND #$BF 
 STA ACT1 ;OPENS KBD
 LDA UPDOWN
 AND #$7F
 STA UPDOWN ;MEANS UP
 RTS
OUTDOWN JSR STARS
OUTDOWN1 RTS 
*************************
STARS LDA YH   
 SEC
 SBC #$10
 TAY       
 STA STARY
 LDX XH
 LDA #$21
 JSR $A48 
 LDA #$22
 LDY STARY
 LDX XH
 JSR $A48 
 LDA #$21
 LDY STARY
 LDX XH
 JSR $A48 
 LDA #$22
 LDY STARY
 LDX XH
 JSR $A48 
 RTS
*
***************************
CHECKYPOS LDA YH 
 CMP #$91 
 BCC CHECKYOUT 
 CMP #$A9 ;EXPERIMENT 
 BCS HICHEK
 JMP ENTOP
HICHEK CMP #$F1 
 BNE CHECKYOUT 
ENTBOT LDA ROW
 BEQ OUTTOP
 LDA #$89
 STA YH
 DEC XH
 JSR PARAMSAVE
 DEC ROW
 LDA #7
 AND ROW
 STA ROW
 LDX ROW
 LDA MNSTSET,X
 JSR MNSTLOAD
 JSR ROOMCHANGE
 JMP CHECKYOUT
ENTOP LDA #0
 STA CEIL
 LDA ROW
 CMP #7
 BNE CONTP
 JSR ERASEH1
 DEC XH
 DEC XH
 LDA #$78
 STA YH
 JSR PRINTH
 JMP CHECKYOUT
CONTP LDA #$F9 
 STA YH
 INC XH
 JSR PARAMSAVE
 INC ROW
 LDA #7
 AND ROW
 STA ROW
 LDX ROW
 LDA MNSTSET,X
 JSR MNSTLOAD
 JSR ROOMCHANGE
CHECKYOUT RTS
*
OUTTOP JMP OUTGO
*
**************************
*
DELAY LDA DELFIX 
 STA DEL
DELTAFIX LDX #$F
DFX1 LDA XOLD,X 
 SEC
 SBC XH     
 STA DELTA,X
 LDA OPMODE0,X
 AND #$80
 BEQ DECRXP
 DEC DEL
DECRXP DEX 
 BPL DFX1
ANOTHER LDA #$70 ;A ONE BY FOUR     
 LDY #1
 LDX #45
 JSR ERASEOLD ;TAKES   TIME TO PRINT A FIGURE.(OFF SCREEN)
 DEC DEL
 BNE ANOTHER
 RTS
************************
CRAWL LDA OLDKEY
 CMP #'G'
 BNE OUTCRAWL ;NO ACTION
 LDA #'!'
 STA OLDKEY ;SETUP FOR NEXT TIME THROUGH
PRCRAW JSR ERASEH1 
 JSR UPDATEC
 JSR PRINTH
 DEC FRAM
 BPL OUTCRAWL 
LDFRAM LDA #3 
 STA FRAM
OUTCRAWL RTS 
******************************
UPDATEC LDX FRAM 
 LDA CRAWSEQ,X
 STA TEMPOSE
 CMP #5
 BNE DIRC
 BIT ACT1
 BMI LEFTC
RIGHTC INC XH
 JMP DIRC
LEFTC DEC XH
DIRC JSR FIXPOSE
 RTS
******************************
CHKCRA LDA MODE
 LSR A
 LSR A
 LSR A
 LSR A
 BCC NOCRAWL
 JSR ERASEH1 
 LDA TEMYH
 STA YH
 LDA #0
 STA TEMPOSE
 JSR FIXPOSE
 JSR PRINTH
NOCRAWL LDA MODE
 RTS
**********************
*
ERASEH1 LDA POSE
 LDX XH
 LDY YH
 JSR ERASEOLD 
LER RTS
******************************
*****************
COLLIDE1 LDA TEMPOSE
 CMP #3
 BNE COLLIDEA
 LDA #0
 STA COLFLG
 RTS
COLLIDEA BIT CAPTUREFLG                 
 BPL COLLIDE2
 RTS
*
COLLIDE2 BIT ROW
 BPL COLLIDE3
 JSR ERASEH
 LDA #$40
 STA YH
 LDA #7
 STA XH
 LDA #0
 STA POSE
 JSR ERASEH
 LDA #'S'
 STA OLDKEY
 RTS
*
*
COLLIDE3 JSR ERASEH1 
 DEC YH
 DEC YH
 BIT ACT1 
 BMI HLFT
 DEC XH
 DEC XH
 JMP CLONK
HLFT INC XH
CLONK BIT NOISEFLG 
 BMI BOPPO
 JSR BELL
 JSR BELL
BOPPO JSR ERASEH1 ;REALLY PRINTING
BIT0 BIT WATEROOM 
 BPL BIT1 
 LDA WATLEV
 CMP YH
 BCS LD50
 JMP FINISHED
BIT1 BIT SHRINKROOMA 
 BPL BIT2 
 LDA LEV
 CMP PERLEV
 BNE LD50
 LDA XLF
 CMP XRT
 BCC LD50
 JMP FINISHED
BIT2 BIT SHRINKROOMB
 BPL LD50
 LDA LEV 
 CMP PERLEV
 BNE LD50
 LDA CEIL
 CMP YBOT
 BCC LD50
 JMP FINISHED
LD50 LDA #50 
 STA DOWNCOUNT
 LDA #0
 STA CYCLE
 JMP REALLYFALL1
*************************
*
CLOCKUP JSR PERCHKS 
 DEC TIM1
 BIT KBD
 BPL INCCLOW
 LDA KBD
 CMP #$9B ;ESCAPE KEY
 BNE INCCLOW
 LDA #0
 STA STRB   
 JMP HELPER
INCCLOW DEC CLLOW 
 BNE CLOCKOUT
 JSR CHANGEUP              
 JSR OPLEVFIX
 DEC CLMID
 BNE CLOCKOUT
 DEC CLHI 
 BNE CLOCKOUT
 LDA #0
 STA CAPTUREFLG             
 STA CLHI
 INC $9DE ;CLHIHI
CLOCKOUT BIT CAPTUREFLG 
 BPL CLOCKFIN
 JSR FIXBACK
CLOCKFIN RTS 
*
* 
*******************************
*
TEMDRIV JSR GETKEY
 JSR SETMODE
 JSR $5206 ;CHECKCHARGE IN EX.5
 JSR ACTION
 JSR REGLEV
 JSR $C38 ;OPMOV
 JSR DELAY 
 JSR CLOCKUP
 RTS
************************
*
*
*
REGLEV JSR LEVSETTER
 LDA XH
 STA XTEMP
 JSR REGSET
 RTS
*
*
FIXBACK LDA POSE
 CMP #$23 ;KNEELING POSE 
 BNE BACKOUT
 LDA #'W'
 STA OLDKEY
 LDX $6
 LDA OPMODE0,X
 AND #$F7 ;CLEAR STAT.
 STA OPMODE0,X
 LDA #1
 STA OPFLG0,X
 LDA #0
 STA BULLETCOUNT
 STA STAT1
 STA STAT2
 BIT ACT1
 BPL WLKRT
WLKLF LDA XH
 CLC
 ADC #3
 STA XNEW,X
 JMP BACKOUT
WLKRT LDA XH
 SEC
 SBC #2
 STA XNEW,X
BACKOUT RTS
*
*
CHANGEUP JSR ROOMCLUE         
 BIT CAPTUREFLG
 BMI CHANGEOUT
 LDA ACT1
 AND #$BF
 STA ACT1
 LDA MODE
 AND #$FD
 STA MODE
 LDA CLMID
 AND #$F
 TAX
 LDA OPMODE0,X
 AND #8
 BNE CHANGEOUT
 LDA OPMODE0,X
 EOR #$40
G11 STA OPMODE0,X
CHANGEOUT RTS
*
*
PERCHKS CLC
 BIT GPFLG
 BPL NOBITGP
 SEC
NOBITGP ROL GPFLG
CHRS0 BIT WATEROOM  
 BPL CHSR1  
 JMP BLUB
CHSR1 BIT SHRINKROOMA
 BPL CHSR2  
 JMP SHRINKA
CHSR2 BIT SHRINKROOMB
 BPL CHANGERET
 JMP SHRINKB
CHANGERET RTS
*
*
*
OPLEVFIX LDA CLLOW
 AND #$F
 TAX
 LDA XOLD,X
 CMP #$84 ;EXPERIMENT 
 BCS OLFOUT  
 CMP #$7C ;EXPERIMENT 
 BCC OLFOUT  
 DEC LEVOP,X
 BPL OLFOUT  
 LDA #2
 STA LEVOP,X
OLFOUT RTS
*
*
ROOMCLUE BIT ROW
 BMI CLUEOUT
 LDA #21
 STA YTAB
 LDA #1
 STA XTAB
 LDA #$25
 STA STRNUM
 JSR PRINSTR
 INC YTAB
 INC STRNUM
 JSR PRINSTR
 INC YTAB
 INC STRNUM
 JSR PRINSTR
 DEC YTAB
 LDA #3
 STA XTAB
 LDA #$28
 CLC
 ADC ROW
 STA STRNUM
 JSR PRINSTR
 LDA #12
 STA XTAB
 JSR PRINSTR
 LDA #7
 STA XTAB
 LDA #$28
 CLC
 ADC COL 
 STA STRNUM
 JSR PRINSTR
 LDA #16
 STA XTAB
 JSR PRINSTR
CLUEOUT RTS 
*
*
SCLR LDA #$20
 STA SCL+2
 LDY #$1F      
 LDA #0
 STA SCL+1
SCL0 LDX #0
SCL STA $2000,X
 INX
 BNE SCL
 INC SCL+2 
 DEY
 BPL SCL0
 LDA #0
 STA SCL+1
 RTS
*
*
*
WARMSTART1 DFB 0,0,0
REPLAY1 DFB 0,0,0
*
 ORG $6F00 ;TEMPORARY INIT
*
*
INIT LDA #0
 STA $8E4 ;LITFLG IN EX.5
 STA CYCLE
 STA SEQTAB
 STA SEQTAB+2
 STA ACT1
 STA POSE
 STA CLHIHI      
 STA WATEROOM
 STA SHRINKROOMA
 STA SHRINKROOMB
 DFB $EA,$EA,$EA 
 DFB $EA,$EA,$EA 
 STA UPDOWN
 LDA #2
 STA SEQTAB+1
 LDA #1
 STA SEQTAB+3
 LDA #$80
 STA MODE
 LDA #32  
 STA DEL
 LDA #255
 STA RCOUNT
 STA CLLOW
 STA CLMID
 LDA #'S'
 STA OLDKEY
 LDA #3
 STA FRAM
 LDA #5
 STA CRAWSEQ
 STA CRAWSEQ+2
 LDA #6
 STA CRAWSEQ+1
 LDA #7
 STA CRAWSEQ+3 
 STA CLHI
 LDA #$18
 STA CRAWLEV
 LDA #$50
 STA CRAWLEV+1
 LDA #$88
 STA CRAWLEV+2
 LDA #$88 
 STA WFLAG
 LDA #$AA 
 STA RFLAG 
 JSR ERASEH
 RTS
*
*
 ORG $6F96
*
*
TESTER JSR TEMDRIV                   
 JMP TESTER
 RTS
*
********************************
*
*
CHFIG CMP #$5A 
 BEQ FIXG   
 CMP #$55
 BEQ FIXG
 CMP #$56
 BEQ FIXG
 CMP #$57
 BEQ FIXG
 CMP #$59
 BEQ FIXG
 CMP #$58 
 BNE CHFIGOUT
FIXLUN DEC XPOS
FIXG DEC XPOS
CHFIGOUT RTS
*
